package com.dfbz.demo;

import java.io.IOException;
import java.io.PipedInputStream;
import java.io.PipedOutputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;

/**
 * @author lscl
 * @version 1.0
 * @intro:
 */
public class Demo08_管道流 {
    public static void main(String[] args) throws Exception {
        // 管道输出流
        PipedOutputStream pos = new PipedOutputStream();

        // 管道输入流
        PipedInputStream pis = new PipedInputStream();

//        pos.connect(pis);
        pis.connect(pos);


        // 开启两个线程

        // 一个线程负责读
        new Thread() {
            @Override
            public void run() {
                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

                try {
                    byte[] data = new byte[1024];

                    while (true) {

                        // 从管道输入流里面读取数据
                        int len = pis.read(data);
                        System.out.println("管道输出流来数据啦【" + new String(data, 0, len) + "】时间为:" + sdf.format(new Date()));

                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }


            }
        }.start();


        // 一个线程负责写
        new Thread(){

            @Override
            public void run() {

                try {
                    Scanner scanner=new Scanner(System.in);

                    while (true){
                        String str = scanner.nextLine();

                        // 将数据写入到管道输出流(管道输出流一旦有了数据之后，管道输入流就可以读取到)
                        pos.write(str.getBytes());
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }


            }
        }.start();


    }
}
